module Unidom
  module Common

    ##
    # YAML Helper 是用于加载知识层枚举的配置文件的辅助模块。
    module YamlHelper

      ##
      # 从应用或者引擎的跟路径 root 加载 config/enum.yml 中的内容到 config 中。
      def self.load_enum(config: nil, root: nil)

        enum_yaml_path = root.join 'config', 'enum.yml'
        raise ArgumentError.new "The file #{enum_yaml_path} does not exist." unless enum_yaml_path.exist?

        unless config.respond_to? :enum
          config.class_eval do
            attr_accessor :enum
          end
        end
        config.enum = {} if config.enum.nil?

        enum_definitions = YAML.load File.read(enum_yaml_path)
        config.enum.merge! enum_definitions['enum'] if enum_definitions.present?&&enum_definitions['enum'].present?

      end

    end

  end
end
